package API.ObjectsDemo;

import java.util.Objects;

/**
 * ClassName:ObjectsText001
 * Package:API.ObjectsDemo
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/1/31-13:27
 * @Version:v1.0
 */
public class ObjectsText001 {
    public static void main(String[] args) {
// 1--> Studnet s1 = new Studnet("zhangsan",23);
        Studnet s1 = null;
        Studnet s2 = new Studnet("zhangsan",23);
        //比较两个对象的属性值是否相同
// 1--> System.out.println(s1.equals(s2));
//        if (s1 != null){
//            System.out.println(s1.equals(s2));
//        }else {
//            System.out.println("调用者为空");
//        }


//        boolean result = Objects.equals(s1,s2);
//        System.out.println(result);
        /*
        * 细节：
        * 1.方法的底层会判断s1是否为null,如果为null,直接返回false
        * 2.如果s1不为null,那么就会利用s1再次调用equals方法
        * 3.此时s1是Student类型,所以最终还是会调用Student中的equals方法
        * 如果没有重写,比较地址值,如果重写了,就比较属性值*/

        Studnet s3 = new Studnet();
        Studnet s4 = null;
        //public static boolean isNull(Object obj) 判断对象是否为null,为null返回ture，反之
        System.out.println(Objects.isNull(s3));//false
        System.out.println(Objects.isNull(s4));//true

        //public static boolean nonNull(Object obj) 判断对象是否为null,跟isNull的结果相反
        System.out.println(Objects.nonNull(s3));//true
        System.out.println(Objects.nonNull(s4));//false

        /*
        * Objects是一个工具类,提供了一些方法去完成一些功能
        *
        * public static boolean equals(Object a,Object b) 先做非空判断,比较两个对象
        * public static boolean isNull(Object obj) 判断对象是否为null,为null返回ture，反之
        * public static boolean nonNull(Object obj) 判断对象是否为null,跟isNull的结果相反
        * */
    }
}
